/*
 * Copyright (c) 2018-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

namespace TencentCloud.Captcha.V20190722.Models
{
    using Newtonsoft.Json;
    using System.Collections.Generic;
    using TencentCloud.Common;

    public class DescribeCaptchaResultResponse : AbstractModel
    {
        
        /// <summary>
        /// OK indicates verification passed.
        /// 7 captcha no match. the passed in Randstr is invalid. please check if the Randstr is consistent with the Randstr returned by the frontend.
        /// The passed-in ticket has expired (the valid period of the ticket is 5 minutes). generate the ticket and Randstr again for validation.
        /// The passed-in ticket is reused. generate the ticket and Randstr again for verification.
        /// 15 decrypt fail. the passed-in Ticket is invalid. please check if the Ticket is consistent with the Ticket returned by the frontend.
        /// 16 appid-ticket mismatch. the passed in CaptchaAppId is incorrect. please check if the CaptchaAppId is consistent with the CaptchaAppId passed in by the frontend, and ensure that the CaptchaAppId is obtained from the verification code console [verification management] -> [basic configuration].
        /// 21 diff invoice verification exception. possible reasons: (1) if the Ticket contains the trerror prefix, generally because the user has a poor network connection, resulting in the frontend's automatic disaster recovery and generation of a disaster recovery Ticket. the business side may skip or post-process as needed. (2) if the Ticket does not include the trerror prefix, it is because the security risk of the request was detected by the CAPTCHA-intl risk control system. the business side may intercept as needed.
        /// 100 appid-secretkey-ticket mismatch. parameter validation error. (1) please check whether the CaptchaAppId and AppSecretKey are correct. the CaptchaAppId and AppSecretKey need to be obtained from verification code console > verification management > basic configuration. (2) please check whether the passed-in ticket is generated by the passed-in CaptchaAppId.
        /// </summary>
        [JsonProperty("CaptchaCode")]
        public long? CaptchaCode{ get; set; }

        /// <summary>
        /// Status description and verification error message.
        /// </summary>
        [JsonProperty("CaptchaMsg")]
        public string CaptchaMsg{ get; set; }

        /// <summary>
        /// In invisible verification mode, this parameter returns the verification result.
        /// EvilLevel=0 indicates that the request is not malicious.
        /// The parameter EvilLevel = 100 indicates that the request is malicious.
        /// </summary>
        [JsonProperty("EvilLevel")]
        public long? EvilLevel{ get; set; }

        /// <summary>
        /// Frontend retrieval time of the captcha-intl, timestamp format.
        /// </summary>
        [JsonProperty("GetCaptchaTime")]
        public long? GetCaptchaTime{ get; set; }

        /// <summary>
        /// Blocking type
        /// Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("EvilBitmap")]
        public long? EvilBitmap{ get; set; }

        /// <summary>
        /// The time when the CAPTCHA is submitted.
        /// </summary>
        [JsonProperty("SubmitCaptchaTime")]
        public long? SubmitCaptchaTime{ get; set; }

        /// <summary>
        /// Device risk category.
        /// Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("DeviceRiskCategory")]
        public string DeviceRiskCategory{ get; set; }

        /// <summary>
        /// CAPTCHA-Intl score.
        /// Note:The score ranges from 0 to 100 (e.g., 20, 70, 90).
        /// A higher score indicates a greater probability that the interaction was initiated by a bot or represents a bot attack.
        /// A lower score indicates a greater probability that the interaction was performed by a real human user.
        /// </summary>
        [JsonProperty("Score")]
        public long? Score{ get; set; }

        /// <summary>
        /// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
        /// </summary>
        [JsonProperty("RequestId")]
        public string RequestId{ get; set; }


        /// <summary>
        /// For internal usage only. DO NOT USE IT.
        /// </summary>
        public override void ToMap(Dictionary<string, string> map, string prefix)
        {
            this.SetParamSimple(map, prefix + "CaptchaCode", this.CaptchaCode);
            this.SetParamSimple(map, prefix + "CaptchaMsg", this.CaptchaMsg);
            this.SetParamSimple(map, prefix + "EvilLevel", this.EvilLevel);
            this.SetParamSimple(map, prefix + "GetCaptchaTime", this.GetCaptchaTime);
            this.SetParamSimple(map, prefix + "EvilBitmap", this.EvilBitmap);
            this.SetParamSimple(map, prefix + "SubmitCaptchaTime", this.SubmitCaptchaTime);
            this.SetParamSimple(map, prefix + "DeviceRiskCategory", this.DeviceRiskCategory);
            this.SetParamSimple(map, prefix + "Score", this.Score);
            this.SetParamSimple(map, prefix + "RequestId", this.RequestId);
        }
    }
}

